package com.hzc.springchan.strategy.operationlog;

import com.hzc.springchan.enums.LogOperation;
import com.hzc.springchan.util.LogUtils;

import java.util.Map;

/**
 * 操作描述生成策略接口
 * @author chen990627
 * @date 2022/10/18
 */
public interface IOperationLogStrategy {

    String NULL = "NULL";

    /**
     * 生成操作描述信息
     *
     * @param paramMap
     * @return
     */
    default String generateInfo(Map<String, Object> paramMap) {
        try {
            return String.format(logOperation().getFormat(), formatParams(paramMap));
        } catch (Exception e) {
            LogUtils.error("{}", e);
            return null;
        }
    }

    /**
     * 格式化参数
     *
     * @return
     */
    String[] formatParams(Map<String, Object> paramMap);

    /**
     * 格式化字符串
     *
     * @return
     */
    LogOperation logOperation();
}
